package com.mk.seckill.rabbitmq;

import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
@Slf4j
public class MQSender {
    /**
     * @Author hhwu
     * @Description //TODO 消息生产者
     * @Date 16:31 2022/6/10
     **/
    @Autowired
    private RabbitTemplate rabbitTemplate;

    public void sendSeckillMessage(String message) {
        log.info("发送消息" + message);
        rabbitTemplate.convertAndSend("seckillExchange", "seckill.message", message);
    }












//    public void send(Object msg) {
//        /**
//         * @Author hhwu
//         * @Description //TODO 学习rabbitmq,fanout广播模式，向队列塞入消息
//         * @Date 16:44 2022/6/10
//         * @Param [msg]
//         * @return void
//         **/
//        log.info("发送消息：" + msg);
//        rabbitTemplate.convertAndSend("queue", msg);
////        rabbitTemplate.convertAndSend("fanoutExchange", "", msg);
//    }
//
//    public void send01(Object msg) {
//    /**
//     * @Author hhwu
//     * @Description //TODO 学习rabbitmq,direct模式，向队列中塞入携带路由key 的消息
//     * @Date 14:50 2022/6/11
//     * @Param
//     * @return
//     **/
//        log.info("发送red" + msg);
//        rabbitTemplate.convertAndSend("directExchange", "queue.red", msg);
//    }
//
//    public void send02(Object msg) {
//    /**
//     * @Author hhwu
//     * @Description //TODO 学习rabbitmq,direct模式，向队列中塞入携带路由key 的消息
//     * @Date 14:50 2022/6/11
//     * @Param
//     * @return
//     **/
//        log.info("发送red" + msg);
//        rabbitTemplate.convertAndSend("directExchange", "queue.green", msg);
//    }
//
//    public void send03(Object msg) {
//    /**
//     * @Author hhwu
//     * @Description //TODO 学习rabbitmq,topic模式，是direct模式的模糊匹配方式
//     * @Date 15:01 2022/6/11
//     * @Param
//     * @return
//     **/
//        log.info("发送消息(QUEUE01接收)：" + msg);
//        rabbitTemplate.convertAndSend("topicExchange", "queue.red.message", msg);
//    }
//
//    public void send04(Object msg) {
//    /**
//     * @Author hhwu
//     * @Description //TODO 学习rabbitmq,topic模式，是direct模式的模糊匹配方式
//     * @Date 15:01 2022/6/11
//     * @Param
//     * @return
//     **/
//        log.info("发送消息(QUEUE02接收)：" + msg);
//        rabbitTemplate.convertAndSend("topicExchange", "green.queue.green.message", msg);
//    }
//
//    public void send05(String msg) {
//        /**
//         * @Author hhwu
//         * @Description //TODO 学习rabbitmq,header模式，很少使用，根据map 的键值对进行匹配，任意匹配到一个键值对消息即可进入队列
//         * @Date 15:21 2022/6/11
//         * @Param
//         * @return
//         **/
//        log.info("发送消息(QUEUE01和QUEUE02接收)：" + msg);
//        MessageProperties properties = new MessageProperties();
//        properties.setHeader("color", "red");
//        properties.setHeader("speed", "fast");
//        Message message = new Message(msg.getBytes(), properties);
//        rabbitTemplate.convertAndSend("headersExchange", "", message);
//    }
//
//    public void send06(String msg) {
//        /**
//         * @Author hhwu
//         * @Description //TODO 学习rabbitmq,header模式，很少使用，根据map 的键值对进行匹配，需要匹配到全部的键值对消息才能进入队列
//         * @Date 15:21 2022/6/11
//         * @Param
//         * @return
//         **/
//        log.info("发送消息(QUEUE01接收)：" + msg);
//        MessageProperties properties = new MessageProperties();
//        properties.setHeader("color", "red");
//        properties.setHeader("speed", "normal");
//        Message message = new Message(msg.getBytes(), properties);
//        rabbitTemplate.convertAndSend("headersExchange", "", message);
//    }
}
